package com.aboverock.module.system.service;

import java.sql.SQLException;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.aboverock.module.system.domain.Resource;
import com.aboverock.module.system.domain.Role;
import com.aboverock.module.system.domain.User;

/**
 * 角色服务类.
 *
 * @author Rock Wang
 * @since 2018-04-10
 */
public interface RoleService extends IService<Role> {

    /**
     * 获取所有role信息（含用户及资源）.
     *
     * @return the roles
     */
    public List<Role> getRoles();


    /**
     * 根据id删除角色，同时删除 角色,资源 和 用户,角色 映射表中数据.
     *
     * @param roleId the role id
     * @throws SQLException the SQL exception
     */
    public void deleteById(String roleId) throws SQLException;

    /**
     * 获取指定角色id下的所有用户.
     *
     * @param roleId the role id
     * @return the users by role id
     */
    public List<User> getUsersByRoleId(String roleId);

    /**
     * 获取指定角色id下的所有资源.
     *
     * @param roleId the role id
     * @return the resources by role id
     */
    public List<Resource> getResourcesByRoleId(String roleId);

    /**
     * 判断角色code是否重复.
     *
     * @param role the role
     * @return true, if is duplicated code
     */
    public boolean isDuplicatedCode(Role role);

    /**
     * 根据角色code获取该角色信息.
     *
     * @param code the code
     * @return the by role code
     */
    public Role getByRoleCode(String code);
}
